Route 53 が CAA レコードに対応しました!
本日(現地時間 8/21)、Route 53 が CAA レコードに対応しました。
さっそくマネジメントコンソールから設定できるようになっているわけですが、その前に CAA レコードについて少し解説します。
CAA (Certification Authority Authorization) レコード
ひとことで言うと、 「このドメインに関する証明書(SSL, TLS)を発行できる認証局(CA) を指定する」ためのレコードです。
例えばこのレコードに「認証局 A しか発行してはならない」と記述した場合は、認証局 B はたとえリクエストがあったとしても証明書を発行しません。 勝手に他人のドメインの証明書を発行してフィッシング。。。ということがやりにくくなるわけですね。
このレコードは、
- ドメイン所有者が記述して
- 認証局(CA) が参照し、リクエスト通りに証明書を発行してよいか判断する
という流れで利用されます。この9月より大手認証局は必ずこのレコードを参照するようになりますので、Route53もその前に対応したというわけです。
ちなみに、CAAレコード自体は設定しなくても問題ありません。 設定されていなければ、9月以降も今まで通りになります。
CAA レコードについては、先日行われた DNS Summer Day 2017 のセッション内でも話題になっていました。
- DNSの怪しい伝説を斬る「増え続けるRR Typeとどう付き合う?」 其田 学 株式会社インターネットイニシアティブ 資料PDF <http://www.dnsops.jp/event/20170628/DSD2017_RRTYPE.pdf>
資料 PDF の 10ページ目からになります。
また、CAA レコード自体は策定されてから時間も経っていますので、既に各方面で解説記事があがっております。下記は一例ですが、詳細はそちらをご参照下さい。
- DNS CAA とは:SSL | DigiCert
- DNS Certification Authority Authorization (CAA)|GMOグローバルサインブログ
- Certification Authority Authorization (CAA) | GeoTrust
- RFC 6844 - DNS Certification Authority Authorization (CAA) Resource Record
設定してみる
実際に、Route53 に CAA レコードを記述してみます。
レコードの記述内容自体は、上で紹介した各ドキュメントを参考にしつつ、便利なジェネレータも公開されているので、これらを使って作成すると良いでしょう。
証明書の発行を依頼する認証局ですが、現時点では我らが ACM (AWS Certificate Manager) はまだ CAA サポートを発表していない1ので、今回は Let's Encrypt から取得してみようと思います。
ジェネレータに必要な事項を記入すると、「Standard BIND Zone File」の欄にレコードが出力されました。
example1.jp. IN CAA 0 issue "letsencrypt.org" example1.jp. IN CAA 0 issuewild ";" example1.jp. IN CAA 0 iodef "mailto:[email protected]"
- 認証局 (issue) : Let's Encrypt
- ワイルドカード証明書を発行する認証局 (issuewild) : なし
- エラーがあった際に通知する先 (iodef) : 担当者のメールアドレス等
この 3行の内容を Route53 に登録します。 ただし Route 53 には、CAA は1ドメイン辺り 1行しか書けないため、Value 欄には下記のように入力して下さい。
0 issue "letsencrypt.org" 0 issuewild ";" 0 iodef "mailto:[email protected]"
Name: 欄は、今回はドメイン自体に指定するので空欄のまま、 Type: 欄は、もちろん CAA - Certification Authority Authorization をプルダウンメニューから選択して下さい。
設定できたら、実際に検索してみます。 検索するクライアントも CAA レコードに対応していないとダメなので要注意ですね。
手元の環境だと、macOS Sierra に標準に入っていた dig
や host
コマンドは対応していなかったので、新規に Amazon Linux を立ち上げて確認しました。
example1.jp
はテスト用のドメインなので、NSレコードに設定されたサーバを一つ指定してクエリします。
$ dig caa example1.jp. @ns-823.awsdns-38.net. +noall +answer ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.56.amzn1 <<>> caa example1.jp. @ns-823.awsdns-38.net. +noall +answer ;; global options: +cmd example1.jp. 300 IN CAA 0 iodef "mailto:[email protected]" example1.jp. 300 IN CAA 0 issue "letsencrypt.org" example1.jp. 300 IN CAA 0 issuewild "\;"
まとめ
- Route 53 に CAA レコードが指定できるようになった
- 確認する時は、クライアントのバージョンにも注意
脚注
- (2017/09/14追記) ACMもCAAレコードに対応しました -> ACM が CAA レコードに対応しました! | Developers.IO ↩